import { createRouter , createWebHashHistory } from "vue-router";
    //导入￥axios封装
    import $axios  from "@/utils/request";
    //弹窗
    import { ElMessage } from "element-plus";

//1.后台账号可以访问前后台所有页面
//2.前台账号只能访问前台网页
//3.没有账号可访问部分前台页面
//给路由设置两个属性：
//requireAuth属性：（所有路由）你目前所登录的账号是否有权限访问当前路由：true:当前账号有权限访问这些路由：false:当前账号没有权限访问这些路由
//isCheckLogin属性：主要针对前台网页，true：这些路由必须登录账号后才能访问；false：那些路由不登录也能访问

const routes = [
    {
        path:'/',
        redirect:'/admin'   //当直接访问官网或本地域名时默认重定向到前台首页
    },
    //前台网站:进入默认访问页面
    {
        path:'/home',
        meta:{requireAuth:false},//前台商城所有页面皆可用任何账号访问
        //子路由
        children:[
            //设置子路由中首页组件的访问地址为空，相当于访问/home的时候，也会默认访问到该组件页面
            {path:'',name:'HomeIndex',component:()=>import('@/views/home/HomeIndex.vue'),meta:{title:'在线商城首页',isCheckLogin:false}},
            {path:'login',name:'HomeLogin',component:()=>import('@/views/home/HomeLogin.vue'),meta:{title:'会员登录',isCheckLogin:false}},
            {path:'cart',name:'HomeCart',component:()=>import('@/views/home/HomeCart.vue'),meta:{title:'会员购物车',isCheckLogin:true}}
        ]
    },
    //后台管理系统：进入默认访问登录页
    {
        path:'/admin',
        children:[
            //设置空路由给登录组件
            {path:'',name:'LoginCom',component:()=>import('@/views/admin/AdminLogin.vue'),meta:{title:'后台系统登录页',requireAuth:false}},
            {path:'index',name:'AdminIndex',component:()=>import('@/views/admin/AdminIndex.vue'),meta:{title:'后台系统首页',requireAuth:true},
            children :[
                {path: 'user',
                    name: 'AdminUserListCom',
                    component: () => import('@/components/admin/user/AdminUserListCom.vue'),
                    meta: { title: '用户列表', requireAuth: true }
                },
                {path: 'zhuye',
                    name: 'AdminZhu',
                    component: () => import('@/views/admin/AdminZhu.vue'),
                    meta: { title: '主页', requireAuth: true }
                },
                {path: 'touxiang',name: 'AdminPersonCom',component: () => import('@/components/admin/person/AdminPersonCom.vue'),meta: { title: '头像', requireAuth: true }},
                {path:'dingdan',name:'DingDan',component:()=>import('@/views/admin/orders/DingDan.vue'),meta:{title:'订单管理页',requireAuth:true}},
                {path:'biao',name:'GoodsBiao',component:()=>import('@/views/admin/goods/GoodsBiao.vue'),meta:{title:'商品页',requireAuth:true}},
                {path:'shop',name:'GoodsShang',component:()=>import('@/views/admin/goods/GoodsShang.vue'),meta:{title:'商品分类',requireAuth:true}},
                {path:'tian',name:'GoodsJia',component:()=>import('@/views/admin/goods/GoodsJia.vue'),meta:{title:'商品添加页',requireAuth:true}},
                {path:'lun',name:'LunBo',component:()=>import('@/views/admin/lunbo/LunBo.vue'),meta:{title:'轮播管理页',requireAuth:true}},
                {path:'echarts',name:'EchartsCom',component:()=>import('@/views/echarts/EchartsCom.vue'),meta:{title:'营收管理',requireAuth:true}},
            ]
        },
        ]
    }
];

const router = createRouter({
    routes,
    history:createWebHashHistory()
})
//设置全局前置路由守卫（必须获取登录者的身份===>isCheckLogin:true/requireAuth:true；没有获取到登录者的身份===>isCheckLogin:false）
router.beforeEach((to,from,next)=>{
    //接收身份数据
    let role;
    //判断即将前往的目标路由是否需要验证访问权限：如果需要验证则发起角色访问请求；如果不需要，只需要登录前台账号
    if(to.meta.requireAuth === true){
        //需要验证当前使用者的访问权限
        //向后端发起请求当前使用者角色的数据
        $axios.post('/role').then((res)=>{
            //判断状态是否为200 ===> 请求成功
            if(res.code === '200'){
                //获取到了使用者身份
                role= res.data;

                document.title=to.meta.title;

                //判断当前身份是否是“admin后台管理员”,如果是则说明已登录后台账号且能访问后台首页
                switch(role){
                    case 'admin':
                        //有足够的权限访问后台页面
                        next();
                    break;
                    case 'user':
                        //权限不足
                        ElMessage.error('您的权限不足，请前往商城登录，祝您购物愉快！');
                        next('/home')
                    break;
                }
            }else{
                //没有获取到身份
                ElMessage.error('您还不是我们的会员，请注册！');
                next('/home/login');
            }
            
        }).catch((err)=>console.log(err))
    }else{
        //不需要权限限制，只要是个账号都能访问到商城
        //只需要做一个判断：当前路由是否需要登录后才能访问
        if(to.meta.isCheckLogin === true){
            //会员缓存提取数据
            let user = localStorage.getItem('user');
            //没有数据
            if(!user){
                //强制前往前台登录页
                next('/home/login');
            }else{
                next();
            }
        }else{
            //不用登录，直接走人
            next();
        }

    }

})

export default router;